package com.yys.seckill.service;

import java.util.List;

import com.yys.seckill.dto.Exposer;
import com.yys.seckill.dto.SeckillExecution;
import com.yys.seckill.entity.Seckill;
import com.yys.seckill.exception.RepeatKillException;
import com.yys.seckill.exception.SeckillCloseException;
import com.yys.seckill.exception.SeckillException;

/**
 * 秒杀业务接口
 * 站在使用者角度设计接口
 * 三个方面：方法定义粒度，参数，返回类型（return 类型／异常）
 * 
 * @author yys.li
 *
 */
public interface SeckillService {

	/**
	 * 查询所有秒杀商品记录
	 * 
	 * @return
	 */
	public List<Seckill> getSeckillList();

	/**
	 * 查询单个秒杀记录
	 * 
	 * @param seckillId 秒杀记录id
	 * @return
	 */
	public Seckill getSeckill(long seckillId);

	/**
	 * 秒杀开启时输出秒杀地址， 否则输出系统时间和秒杀时间
	 * 
	 * @param seckillId
	 */
	Exposer exportSeckillUrl(long seckillId);

	SeckillExecution executeSeckill(long seckillId, long userPhone, String md5)
		throws SeckillException,RepeatKillException,SeckillCloseException;
}
